package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created with IntelliJ IDEA.
 * Description:
 */
// 被 @Controller 注解的类中的方法加了 @RequestMapping 才能被客户端页面访问到
// 五大类注解中的其他注解都不行，@Controller就是专门负责交互的注解
@Controller
@ResponseBody
// 该注解就替代了之前需要得到 Logger 对象的 LoggerFactory.getLogger() 操作
// 这个注解就会在代码编译成字节码前加上 LoggerFactory.getLogger() 操作，而返回的对象名就是log
@Slf4j
public class UserController {

    // 打印日志的过程
    // 1.先得到日志对象
    //   必须使用 slf4j对象的Logger
    //   设置当前类对象的类型，方便我们看到打印的日志是从哪个类打印的
//    private final static Logger log =
//            LoggerFactory.getLogger(UserController.class);
//
//    @RequestMapping("/sayhi")
//    public void sayHi() {
//        // 2. 使用日志对象提供的打印方法进行日志打印
//        //    方法决定日志级别，下面日志级别从低到高
//        //    日志级别最小，trace
//        log.trace("我是trace");
//        //    调试阶段打印的日志
//        log.debug("我是debug");
//        //    输出普通信息，默认日志级别
//        log.info("我是info");
//        //    输出警告信息
//        log.warn("我是warn");
//        //    输出报错信息
//        log.error("我是error");
//    }

    // 更简单的打印日志的方法，需要使用 lombok 插件和 @Slf4j 的注解
    @RequestMapping("/sayhi")
    public void sayHi() {
        log.trace("我是trace");
        log.debug("我是debug");
        log.info("我是info");
        log.warn("我是warn");
        log.error("我是error");
    }


}
